package com.qfedu.openplateform.jwt;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.time.Instant;
import java.util.Date;

public class TokenTest {

    public static void main(String[] args) throws InterruptedException {

        // 生成token
        Instant now = Instant.now();
        String jwt = Jwts.builder()
                .setSubject("admin")//设置当前的用户是谁,当然任何信息都可以随便写,只不过你后续拿到之后不知道怎么处理而已
                .setIssuedAt(Date.from(now))//设置开始的有效期
                .setExpiration(Date.from(now.plusSeconds(3600)))//设置过期时间我当前时间顺眼一小时
                // 自定义的参数
                .claim("id", 1)//可以随便内容,主要是键值对,可以在需要的地方拿出来
                .claim("quanxian", "ADMIN")// 权限，不可以写密码
                //  meiyoumima  盐
                .signWith(SignatureAlgorithm.HS256, "meiyoumima".getBytes())//设置签名的算法和秘钥值
                .compact();
        System.err.println(jwt);

        //Thread.sleep(15 * 1000);

        // 解析token
        Claims body = Jwts.parser().setSigningKey("meiyoumima".getBytes()).parseClaimsJws(jwt).getBody();

        // 得到token 声明的主题
        String subject = body.getSubject();

        Object id = body.get("id");


        System.out.println("id = " + id);
        System.out.println("subject = " + subject);


    }
}
